package mvc;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class ProntuarioControl extends JFrame implements Observer {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4540820473816420631L;

	private ProntuarioModel model; // @jve:decl-index=0:

	private JDesktopPane prontuario = null;

	private JLabel numPront = null;

	private JLabel RG = null;

	private JLabel dataNasc = null;

	private JLabel estadoCivil = null;

	private JLabel nomePaciente = null;

	private JLabel telefoneRes = null;

	private JLabel celular = null;

	private JLabel telefoneRec = null;

	private JLabel endereco = null;

	private JLabel bairro = null;

	private JLabel CEP = null;

	private JLabel cidade = null;

	private JLabel estado = null;

	private JLabel dataCadastramento = null;

	private JRadioButton filhos = null;

	private JTextField cNome = null;

	private JTextField cPront = null;

	private JTextField cRG = null;

	private JTextField cNasc = null;

	private JTextField cEstado = null;

	private JTextField cTelRes = null;

	private JTextField cCel = null;

	private JTextField cTelRec = null;

	private JTextField cEndereco = null;

	private JTextField cBairro = null;

	private JTextField cCep = null;

	private JTextField cCidade = null;

	private JTextField cData = null;

	private JButton insercao = null;

	private JButton excluir = null;

	private JComboBox cEstadoCivil = null;

	private JButton jButton = null;

	private JButton ButtonLimpar = null;

	public ProntuarioControl() {
		// Prontuario = getProntuario();
		// setVisible(true);
		//this.setContentPane(getProntuario());
		//this.setSize(490, 600);
		System.out.println("Iniciado");
		initialize();
	}

	private void initialize() {
		this.setSize(new Dimension(524, 519)); // Generated
		setTitle("Prontuario"); // Generated
		setContentPane(getProntuario()); // Generated
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	/**
	 * This method initializes Prontuario
	 * 
	 * @return javax.swing.JDesktopPane
	 */
	private JDesktopPane getProntuario() {
		if (prontuario == null) {
			dataCadastramento = new JLabel();
			dataCadastramento.setText("Data Cadastramento");
			dataCadastramento.setSize(new Dimension(126, 21));
			dataCadastramento.setFont(new Font("DialogInput", Font.BOLD, 12));
			dataCadastramento.setName("Cadastro");
			dataCadastramento.setLocation(new Point(12, 404));
			estado = new JLabel();
			estado.setText("Estado");
			estado.setSize(new Dimension(126, 21));
			estado.setFont(new Font("DialogInput", Font.BOLD, 12));
			estado.setLocation(new Point(13, 374));
			cidade = new JLabel();
			cidade.setText("Cidade");
			cidade.setSize(new Dimension(126, 21));
			cidade.setFont(new Font("DialogInput", Font.BOLD, 12));
			cidade.setLocation(new Point(12, 342));
			CEP = new JLabel();
			CEP.setText("C E P");
			CEP.setSize(new Dimension(126, 21));
			CEP.setLocation(new Point(13, 313));
			bairro = new JLabel();
			bairro.setText("Bairro");
			bairro.setSize(new Dimension(126, 21));
			bairro.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
			bairro.setFont(new Font("DialogInput", Font.BOLD, 12));
			bairro.setLocation(new Point(15, 284));
			endereco = new JLabel();
			endereco.setText("Endereco");
			endereco.setSize(new Dimension(126, 21));
			endereco.setFont(new Font("DialogInput", Font.BOLD, 12));
			endereco.setLocation(new Point(15, 254));
			telefoneRec = new JLabel();
			telefoneRec.setText("Telefone Recado");
			telefoneRec.setSize(new Dimension(126, 21));
			telefoneRec.setFont(new Font("DialogInput", Font.BOLD, 12));
			telefoneRec.setLocation(new Point(15, 224));
			celular = new JLabel();
			celular.setText("Celular Numero");
			celular.setSize(new Dimension(126, 21));
			celular.setFont(new Font("DialogInput", Font.BOLD, 12));
			celular.setLocation(new Point(16, 193));
			telefoneRes = new JLabel();
			telefoneRes.setText("Telefone Res.");
			telefoneRes.setSize(new Dimension(126, 21));
			telefoneRes.setFont(new Font("DialogInput", Font.BOLD, 12));
			telefoneRes.setLocation(new Point(15, 165));
			nomePaciente = new JLabel();
			nomePaciente.setText("R.G. No.");
			nomePaciente.setSize(new Dimension(126, 21));
			nomePaciente.setName("RG");
			nomePaciente.setFont(new Font("DialogInput", Font.BOLD, 12));
			nomePaciente.setLocation(new Point(15, 74));
			estadoCivil = new JLabel();
			estadoCivil.setText("Estado Civil");
			estadoCivil.setSize(new Dimension(126, 21));
			estadoCivil.setName("EstadoCivil");
			estadoCivil.setFont(new Font("DialogInput", Font.BOLD, 12));
			estadoCivil.setLocation(new Point(16, 135));
			dataNasc = new JLabel();
			dataNasc.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
			dataNasc.setLocation(new Point(15, 105));
			dataNasc.setSize(new Dimension(126, 21));
			dataNasc.setFont(new Font("DialogInput", Font.BOLD, 12));
			dataNasc.setText("Data Nascimento");
			RG = new JLabel();
			RG.setText("Nome Paciente");
			RG.setSize(new Dimension(126, 21));
			RG.setFont(new Font("DialogInput", Font.BOLD, 12));
			RG.setName("NomePaciente");
			RG.setLocation(new Point(16, 45));
			numPront = new JLabel();
			numPront.setToolTipText("");
			numPront.setVerticalAlignment(SwingConstants.CENTER);
			numPront.setVerticalTextPosition(SwingConstants.BOTTOM);
			numPront.setFont(new Font("DialogInput", Font.BOLD, 12));
			numPront.setLocation(new Point(17, 15));
			numPront.setSize(new Dimension(126, 21));
			numPront.setText("Numero Prontuario");
			prontuario = new JDesktopPane();
			prontuario.setName("Prontuario");
			prontuario.setLayout(null);
			prontuario.add(numPront, null);
			prontuario.add(RG, null);
			prontuario.add(dataNasc, null);
			prontuario.add(estadoCivil, null);
			prontuario.add(nomePaciente, null);
			prontuario.add(telefoneRes, null);
			prontuario.add(celular, null);
			prontuario.add(telefoneRec, null);
			prontuario.add(endereco, null);
			prontuario.add(bairro, null);
			prontuario.add(CEP, null);
			prontuario.add(cidade, null);
			prontuario.add(estado, null);
			prontuario.add(dataCadastramento, null);
			prontuario.add(getFilhos(), null);
			prontuario.add(getcNome(), null);
			prontuario.add(getCpront(), null);
			prontuario.add(getCrg(), null);
			prontuario.add(getCnasc(), null);
			// prontuario.add(getCEstado(), null);
			prontuario.add(getcTelRes(), null);
			prontuario.add(getcCel(), null);
			prontuario.add(getcTtelRec(), null);
			prontuario.add(getcEndereco(), null);
			prontuario.add(getcBairro(), null);
			prontuario.add(getcCep(), null);
			prontuario.add(getcCidade(), null);
			prontuario.add(getCEstado(), null);
			prontuario.add(getcData(), null);
			prontuario.add(getinsercao(), null);
			prontuario.add(getexcluir(), null);
			prontuario.add(getCEstadoCivil(), null); // Generated
			prontuario.add(getJButton(), null);
			prontuario.add(getButtonLimpar(), null);
		}
		return prontuario;
	}

	/**
	 * This method initializes filhos
	 * 
	 * @return javax.swing.JRadioButton
	 */
	private JRadioButton getFilhos() {
		if (filhos == null) {
			filhos = new JRadioButton("Filhos", false);
			filhos.setText("Filhos");
			filhos.setSize(new Dimension(126, 21));
			filhos.setToolTipText("");
			filhos.setLocation(new Point(12, 434));
		}
		return filhos;
	}

	/**
	 * This method initializes cNome
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcNome() {
		if (cNome == null) {
			cNome = new JTextField();
			cNome.setText("");
			cNome.setLocation(new Point(154, 46));
			cNome.setSize(new Dimension(324, 20));
			cNome.setName("cpron");
		}
		return cNome;
	}

	/**
	 * This method initializes cPront
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getCpront() {
		if (cPront == null) {
			cPront = new JTextField();
			cPront.setText("");
			cPront.setLocation(new Point(152, 16));
			cPront.setSize(new Dimension(324, 20));
			cPront.setName("cpron");
			cPront.setEditable(false);
		}
		return cPront;
	}

	/**
	 * This method initializes cRG
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getCrg() {
		if (cRG == null) {
			cRG = new JTextField();
			cRG.setText("");
			cRG.setLocation(new Point(154, 76));
			cRG.setSize(new Dimension(324, 20));
			cRG.setName("cpron");
		}
		return cRG;
	}

	/**
	 * This method initializes cNasc
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getCnasc() {
		if (cNasc == null) {
			cNasc = new JTextField();
			cNasc.setText("");
			cNasc.setLocation(new Point(154, 107));
			cNasc.setSize(new Dimension(324, 20));
			cNasc.setName("cpron");
		}
		return cNasc;
	}

	/**
	 * This method initializes cTelRes
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcTelRes() {
		if (cTelRes == null) {
			cTelRes = new JTextField();
			cTelRes.setLocation(new Point(154, 166));
			cTelRes.setSize(new Dimension(324, 20));
		}
		return cTelRes;
	}

	/**
	 * This method initializes cCel
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcCel() {
		if (cCel == null) {
			cCel = new JTextField();
			cCel.setLocation(new Point(154, 197));
			cCel.setSize(new Dimension(324, 20));
		}
		return cCel;
	}

	/**
	 * This method initializes cTtelRec
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcTtelRec() {
		if (cTelRec == null) {
			cTelRec = new JTextField();
			cTelRec.setLocation(new Point(154, 227));
			cTelRec.setSize(new Dimension(324, 20));
		}
		return cTelRec;
	}

	/**
	 * This method initializes cEndereco
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcEndereco() {
		if (cEndereco == null) {
			cEndereco = new JTextField();
			cEndereco.setLocation(new Point(154, 256));
			cEndereco.setSize(new Dimension(324, 21));
		}
		return cEndereco;
	}

	/**
	 * This method initializes cBairro
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcBairro() {
		if (cBairro == null) {
			cBairro = new JTextField();
			cBairro.setLocation(new Point(154, 287));
			cBairro.setSize(new Dimension(324, 20));
		}
		return cBairro;
	}

	/**
	 * This method initializes cCep
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcCep() {
		if (cCep == null) {
			cCep = new JTextField();
			cCep.setLocation(new Point(154, 317));
			cCep.setSize(new Dimension(324, 20));
		}
		return cCep;
	}

	/**
	 * This method initializes cCidade
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcCidade() {
		if (cCidade == null) {
			cCidade = new JTextField();
			cCidade.setLocation(new Point(154, 347));
			cCidade.setSize(new Dimension(324, 20));
		}
		return cCidade;
	}

	/**
	 * This method initializes cEstado
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getCEstado() {
		if (cEstado == null) {
			cEstado = new JTextField();
			cEstado.setLocation(new Point(154, 376));
			cEstado.setSize(new Dimension(324, 20));
		}
		return cEstado;
	}

	/**
	 * This method initializes cData
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getcData() {
		if (cData == null) {
			cData = new JTextField();
			cData.setLocation(new Point(154, 406));
			cData.setSize(new Dimension(324, 20));
		}
		return cData;
	}

	/**
	 * This method initializes insercao
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getinsercao() {
		if (insercao == null) {
			insercao = new JButton();
			insercao.setText("Inserir");
			insercao.setBounds(new Rectangle(424, 465, 87, 22));
			getRootPane().setDefaultButton(insercao);
			insercao.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("insercao danos no prontuario");
					insereProntuario();

				}

			});
		}
		return insercao;
	}

	/**
	 * This method initializes excluir
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getexcluir() {
		if (excluir == null) {
			excluir = new JButton();
			excluir.setPreferredSize(new Dimension(87, 22));
			excluir.setBounds(new Rectangle(335, 465, 87, 22));
			excluir.setText("Excluir");
			excluir.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Remove prontuario");
					model.removeProntuario(cPront.getText());
				}
			});
		}
		return excluir;
	}

	/**
	 * This method initializes cEstadoCivil
	 * 
	 * @return javax.swing.JComboBox
	 */
	private JComboBox getCEstadoCivil() {
		if (cEstadoCivil == null) {
			String[] estados = { "Solteiro(a)", "Casado(a)", "Viuvo(a)",
					"Divorciado(a)" };
			cEstadoCivil = new JComboBox(estados);
			cEstadoCivil.setBounds(new Rectangle(154, 136, 325, 23)); // Generated

		}
		return cEstadoCivil;
	}

	/**
	 * This method initializes jButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(227, 465, 87, 22));
			jButton.setText("Buscar");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Busca de prontuario");
					buscar();
				}
			});
		}
		return jButton;
	}

	private void buscar() {
		String RG = cRG.getText();

		if (RG.length() > 0)
			model.buscaProntuario(RG);

	}

	public ProntuarioModel getModel() {
		return model;
	}

	public void setModel(ProntuarioModel model) {
		this.model = model;
	}

	private void insereProntuario() {
		String nome, CPF, RG,dataNasc,dataCadas,estadoCivil;
		String endereco, bairro, cidade, estado, CEP;
		String telRes, telCel, telRec; // telefones residencial, celular e
										// recado



		nome = cNome.getText();
		RG = cRG.getText();
		endereco = cEndereco.getText();
		bairro = cBairro.getText();
		cidade = cCidade.getText();
		estado = cEstado.getText();
		telRes = cTelRes.getText();
		telCel = cCel.getText();
		telRec = cTelRec.getText();
		dataNasc= cNasc.getText();
		dataCadas = cData.getText();
		int ec=cEstadoCivil.getSelectedIndex();
		estadoCivil=String.valueOf(ec);

		CEP = cCep.getText();
		model.addProntuario(nome, dataNasc, "", RG, endereco, bairro, cidade, estado,
							telRes, telCel, telRec, CEP, dataCadas,estadoCivil);

	}

	public void update(Observable obs, Object obj) {
		String endereco;
		cPront.setText(model.getProntuario());
		cData.setText(model.getDataCadast());
		cNome.setText(model.getNome());
		cRG.setText(model.getRG());
		cNasc.setText(model.getDataNasc());
		model.getEstadoCivil();
		int ec=Integer.parseInt(model.getEstadoCivil());
		cEstadoCivil.setSelectedItem(ec);

		cEndereco.setText(model.getEndereco());
		cBairro.setText(model.getBairro());
		cEstado.setText(model.getEstado());
		cCidade.setText(model.getCidade());
		cNasc.setText(model.getDataNasc());
		cData.setText(model.getDataCadast());
		cTelRec.setText(model.getTelefoneRec());
		cTelRes.setText(model.getTelefoneRes());
		cCel.setText(model.getTelefoneCel());

	} // updata

	public void LimparCampos(){
		cPront.setText("");
		cNome.setText("");
		cRG.setText("");
		cEndereco.setText("");
		cBairro.setText("");
		cEstado.setText("");
		cCidade.setText("");
		cNasc.setText("");
		cData.setText("");
		cTelRec.setText("");
		cTelRes.setText("");
		cCel.setText("");
		cCep.setText("");
	
	}
	/**
	 * This method initializes ButtonLimpar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getButtonLimpar() {
		if (ButtonLimpar == null) {
			ButtonLimpar = new JButton();
			ButtonLimpar.setBounds(new Rectangle(109, 465, 115, 22));
			ButtonLimpar.setFont(new Font("DialogInput", Font.BOLD, 12));
			ButtonLimpar.setText("Limpar Tela");
			ButtonLimpar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					LimparCampos();
				}
			});
			
		}
		return ButtonLimpar;
	}

	public static void main(String[] args) {
		BancoDeDadosInterface bd = new BancoDeDados();
		ProntuarioControl control = new ProntuarioControl();
		ProntuarioModel model = new ProntuarioModel(bd);
		// oi.getProntuarioControl();
		control.setDefaultCloseOperation(EXIT_ON_CLOSE);
		control.setVisible(true);
		control.setModel(model);
		model.addObserver(control);

	}

}  //  @jve:decl-index=0:visual-constraint="64,3"
